import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.*;

/**
 * Clase en la cual se crea el objeto que muestra la cantidad de tiempo restante.
 * 
 * @author Ulises Yamil Castorena Caldera
 * @version 1.0
 */
public class Tiempo extends Actor
{
    protected int tiem;//Variable que indica el tiempo restante.
    private GreenfootImage img;//Variable que se va a utilizar para crear un objeto imagen.
    private boolean band;//Variable que indica el momento en el cual el tiempo inicia a decrementar.
    private int band2;//Variable que se utiliza para saber cuanto ha pasado y si llega a su limite el tiempo se decrementa
    
    /**
     * Constructor para la clase tiempo, se iguala el tiempo al valor que se necesite al inicio y se crea la imagen para mostrarlo.
     */
    public Tiempo()
    {
        tiem = 30;
        band = false;
        band2 = 0;
        img = new GreenfootImage(Integer.toString(tiem)+"s",20,Color.BLACK,Color.WHITE);
        setImage(img);
    }
    
    /**
     * Método Act que muestra la imagen ademas de llamar al método para poder validar si el tiempo se debe de reducir.
     */
    public void act() 
    {
        setImage(new GreenfootImage(Integer.toString(tiem)+"s",20,Color.BLACK,Color.WHITE));        
        decrementaTiempo();
        pierdePorTiempo();
    }    
    
    /**
     * Método que incrementa el tiempo limite.
     */
    public void incrementaTiempo()
    {
        if(tiem < 500)
           tiem = tiem + 15;
    }
    
    /**
     * Método que valida en que momento el tiempo se debe de reducir.
     */
    public void decrementaTiempo()
    {
        if(!band)
        {
            tiem --;
            band = true;
        }
        else 
        {
            if(band2 == 70)   
            {
               band = false;
               band2 = 0;
            }
            else 
               band2 ++;
        }
    }
    
    /**
     * Cuando este método es llamado, el tiempo se decrementa en 30.
     */
    public void pierdeTiempo()
    {
        tiem = tiem - 30;
    }
    
    /**
     * Método que indica si el tiempo llega a cero, manda un mensaje al mundo que muestre que perdio.
     */
    public void pierdePorTiempo()
    {
        if(tiem <= 0)
           ((Mundo)getWorld()).pierdes();
    }
}
